【Oracle】一个SQL语法分析 | 您所在的位置:网站首页 › oracle sql语法分析提取参数 › 【Oracle】一个SQL语法分析 |
一、源代码:
SELECT a.datatime, count(1) FROM (
SELECT TO_CHAR(d.datatime, 'yyyy-mm-dd hh24:mi') AS datatime
FROM DATA d WHERE 1 = 1
AND d.DATATIME > TO_DATE('2017-08-02', 'yyyy-mm-dd')
AND d.DATATIME < TO_DATE('2017-08-02 23:59', 'yyyy-mm-dd hh24:mi')
) a
GROUP BY a.datatime
ORDER BY a.datatime;
二、解析:
①count(1)表示只统计查询表里的第一列;第一是方便,第二是快,只扫描第一列。如果用count(※)则会扫描所有列;第三点事:如果下面有null,count(1)则不计入统计这一项结果;但是如果是count(*)则会统计;(这里的※就是后面的星号,MarkDown两个星号会变斜体) ②TO_CHAR是把日期或者数字变成字符串,不能指定字符串长度; 使用TO_CHAR处理日期的格式为: TO_CHAR(number,‘格式format’),例如,上面的例子中用到的: TO_CHAR(d.datatime, 'yyyy-mm-dd hh24:mi')③WHERE 1 = 1是全真条件,为了让后面的AND都能顺利执行,如果不是1=1这样的全真条件,AND就会直接跟到WHERE后面去,就会报错; 把number类型的时间变成格式化的CHAR; ④TO_DATE是把CHAR类型的时间,便是DATE类型; TO_CHAR(d.datatime, 'yyyy-mm-dd hh24:mi') 这里的月份是mm,Mysql中是MM,注意区别;这里需要注意的是,hh24表示24小时制;而Mysql中hh表示12小时制,HH表示24小时制;这里的分钟,也不是Mysql中的mm,而是mi;⑤这里的习惯是datatime小写的时间是CHAR格式的,DATATIME是时间格式的时间; ⑥GROUP BY a.datatime 表示分组,按照时间分组 ⑦ORDER BY a.datatime; 表示排序,按照时间来排序; ⑧最重要的一点是:这里是嵌套语句,一个里面套另一个;分开来看就行; |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |